package domain.dao.interfaces;

import java.util.List;

import domain.entities.interfaces.IContact;
import domain.entities.interfaces.IContactGroup;

public interface IDAOContactGroup {

	public abstract int addContactGroup(
			int userId, String groupName, String[] contactsOfGroup)
			throws Exception;

	public abstract void deleteContactGroup(int id) throws Exception;

	public abstract void updateContactGroup(
			IContactGroup gc,
			int id, String groupName) throws Exception;

	public abstract void addContactToGroup(
			int idContactGroup, int idContact) throws Exception;
	
	public abstract void addContactsToGroup(
			int idContactGroup, String[] contactsToAdd) throws Exception;

	public abstract void addContactToGroups(
			String[] contactGroups, int idContact) throws Exception;
	
	public abstract void removeContactFromGroup(
			int idContactGroup, int idContact) throws Exception;

	public abstract void removeContactsFromGroup(
			int idContactGroup, String[] contactsToRemove) throws Exception;

	public abstract void removeContactFromGroups(
			String[] contactGroups, int idContact)  throws Exception;
	
	public abstract List<IContactGroup> getAll();

	public abstract List<IContactGroup> getByUserId(int userId);

	public abstract IContactGroup getById(int id);

	public abstract List<IContactGroup> getByContactId(int userId, int contactId);

	public abstract List<IContactGroup> searchContactGroup(String partOfGrouName);

	public abstract List<IContact> getContainedContact(int idContactGroup);

	public abstract List<IContact> getNotContainedContact(int idContactGroup);

}